const {Router} = require('express')
const router = new Router()

// 引入角色验证
const rolesPermission = require('../../../utils/validateRole/rolesPermission')
// 引入商品信息模型
const GoodsInformationModel = require('../../../model/goodsInformation')

router.get('/showGoods',function (request, response) {
    const {hostId, goodsId} = request.query

    const validate = {
        permitRoles: ['admin'],
        secret: request.get('permission')
    }
    const findData = {}
    //当传递了一个goodsId是就仅查询当前goodsId的商品
    if (goodsId) findData._id = goodsId

    if(rolesPermission(validate)){
        return oprate(findData,response)
    }

    validate.permitRoles = ['boss','manager','server']
    if (rolesPermission(validate)){
        findData.hostId = hostId
        return oprate(findData,response)
    }

    return response.json({
        code: '200',
        data: 'error',
        msg: '查看失败'
    })
})

function oprate(findData,response){
    const data = {
        code: '200',
        data: 'error',
        msg: '查看失败'
    }

    // 因为find有效率问题，所以最好是仅查询一个时就使用findOne方法，未传递参数就查询全部
    if (findData._id){
        GoodsInformationModel.findOne(findData,function (err,doc) {
            if(err) return response.json(data)

            // 因为存入数据库的内容是嵌套对象，我这里试试后台先解析一遍行不行
            data.data = doc
            data.msg = '查看成功'
            return response.json(data)
        })
    }else {
        GoodsInformationModel.find(findData,function (err,doc) {
            if(err) return response.json(data)

            // 因为存入数据库的内容是嵌套对象，我这里试试后台先解析一遍行不行
            data.data = doc
            data.msg = '查看成功'
            return response.json(data)
        })
    }
}

module.exports = router
